import router from '@/router'
import { TOKEN } from './constant'
import axios from 'axios'
import { useUserStore } from '@/stores/user'

const BASE_URL = import.meta.env.VITE_BASE_URL || 'http://localhost:20000/api/front'
console.log(BASE_URL)

const axiosInstance = axios.create({
  baseURL: BASE_URL,
  timeout: 5000
})
// 添加请求拦截器
axiosInstance.interceptors.request.use((config) => {
  const store = useUserStore()
  // 检查token
  const nonToken = !store.token || store.token === ''
  // 检查请求是否为登录或注册请求
  const isLoginOrRegister =
    config.url.includes('/login') || config.url.includes('/register')
  // 在发送请求之前做些什么
  if (nonToken && !isLoginOrRegister) {
    // 如果 token 不存在，跳转到登录页面并中断请求
    router.push('/login')
    return Promise.reject(new Error('登录失效,请重新登录'))
  }
  config.headers.TOKEN = store.token
  // 如果 token 存在，将其添加到请求头（如果需要）
  // config.headers[TOKEN] = token // 替换为你实际使用的 token 名称
  return config
})

// 添加响应拦截器
axiosInstance.interceptors.response.use(
  (response) => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response
  },
  (error) => {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)
export default axiosInstance
